Skip to content

使用情境

若專案下有多個分枝,有時候就會碰到在寫 A 功能時,突然需要切到其他分枝修 bug。 最常見的做法是:

  1. stash 目前的異動,再切換到其他分枝修改
  2. commit 一個 WIP (work in progress),待修改完 reset 回去
  3. clone 多個資料夾,在不同資料夾下作業

不過,這些作法可能會造成硬碟空間的浪費,而且可能會浪費許多時間。 以下紀錄一個較佳的解決方案:

列出當前管理的工作目錄

bash
git worktree list

建立新的工作目錄

bash
git worktree add <path> <branch>

移動工作目錄的路徑

bash
git worktree move <path-A> <path-B>

鎖定/解鎖建立的工作目錄

工作目錄被鎖定的情況下,可以避免這個工作目錄被移動或刪除:

bash
# 鎖定建立的工作目錄
git worktree lock [--reason <string>] <worktree>

# 解鎖建立的工作目錄
git worktree unlock <worktree>

刪除建立的的工作目錄

bash
git worktree remove <path/worktree>

bash
rm -rf ./<folder>/
# 清除 Git 無法管理的工作目錄
git worktree prune

以 VitePress 建置,內容以 CC BY-NC-SA 4.0 釋出。